#Boa:Dialog:LClientes

import wx

def create(parent):
    return LClientes(parent)

[wxID_LCLIENTES, wxID_LCLIENTESBTN_LISTAR, wxID_LCLIENTESDCODIGO, 
 wxID_LCLIENTESDEMAIL, wxID_LCLIENTESDFECHA_NACIMIENTO, wxID_LCLIENTESDNOMBRE, 
 wxID_LCLIENTESDPESOS_ACUMULADOS, wxID_LCLIENTESDPROVINCIA, 
 wxID_LCLIENTESDTELEFONO, wxID_LCLIENTESHCODIGO, wxID_LCLIENTESHEMAIL, 
 wxID_LCLIENTESHFECHA_NACIMIENTO, wxID_LCLIENTESHNOMBRE, 
 wxID_LCLIENTESHPESOS_ACUMULADOS, wxID_LCLIENTESHPROVINCIA, 
 wxID_LCLIENTESHTELEFONO, wxID_LCLIENTESSTATICTEXT1, 
 wxID_LCLIENTESSTATICTEXT10, wxID_LCLIENTESSTATICTEXT11, 
 wxID_LCLIENTESSTATICTEXT12, wxID_LCLIENTESSTATICTEXT13, 
 wxID_LCLIENTESSTATICTEXT14, wxID_LCLIENTESSTATICTEXT15, 
 wxID_LCLIENTESSTATICTEXT16, wxID_LCLIENTESSTATICTEXT2, 
 wxID_LCLIENTESSTATICTEXT3, wxID_LCLIENTESSTATICTEXT4, 
 wxID_LCLIENTESSTATICTEXT5, wxID_LCLIENTESSTATICTEXT6, 
 wxID_LCLIENTESSTATICTEXT7, wxID_LCLIENTESSTATICTEXT8, 
 wxID_LCLIENTESSTATICTEXT9, 
] = [wx.NewId() for _init_ctrls in range(32)]

class LClientes(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_LCLIENTES, name=u'LClientes',
              parent=prnt, pos=wx.Point(273, 302), size=wx.Size(674, 237),
              style=wx.DEFAULT_DIALOG_STYLE, title=u'Listado Clientes')
        self.SetClientSize(wx.Size(674, 237))

        self.dnombre = wx.TextCtrl(id=wxID_LCLIENTESDNOMBRE, name=u'dnombre',
              parent=self, pos=wx.Point(141, 28), size=wx.Size(187, 21),
              style=0, value=u'')

        self.hnombre = wx.TextCtrl(id=wxID_LCLIENTESHNOMBRE, name=u'hnombre',
              parent=self, pos=wx.Point(477, 28), size=wx.Size(187, 21),
              style=0, value=u'')

        self.dcodigo = wx.TextCtrl(id=wxID_LCLIENTESDCODIGO, name=u'dcodigo',
              parent=self, pos=wx.Point(140, 54), size=wx.Size(188, 21),
              style=0, value=u'')

        self.hcodigo = wx.TextCtrl(id=wxID_LCLIENTESHCODIGO, name=u'hcodigo',
              parent=self, pos=wx.Point(476, 54), size=wx.Size(188, 21),
              style=0, value=u'')

        self.dfecha_nacimiento = wx.TextCtrl(id=wxID_LCLIENTESDFECHA_NACIMIENTO,
              name=u'dfecha_nacimiento', parent=self, pos=wx.Point(140, 79),
              size=wx.Size(188, 21), style=0, value=u'')

        self.hfecha_nacimiento = wx.TextCtrl(id=wxID_LCLIENTESHFECHA_NACIMIENTO,
              name=u'hfecha_nacimiento', parent=self, pos=wx.Point(476, 79),
              size=wx.Size(188, 21), style=0, value=u'')

        self.dprovincia = wx.TextCtrl(id=wxID_LCLIENTESDPROVINCIA,
              name=u'dprovincia', parent=self, pos=wx.Point(140, 103),
              size=wx.Size(188, 21), style=0, value=u'')

        self.hprovincia = wx.TextCtrl(id=wxID_LCLIENTESHPROVINCIA,
              name=u'hprovincia', parent=self, pos=wx.Point(476, 103),
              size=wx.Size(188, 21), style=0, value=u'')

        self.dtelefono = wx.TextCtrl(id=wxID_LCLIENTESDTELEFONO,
              name=u'dtelefono', parent=self, pos=wx.Point(140, 127),
              size=wx.Size(188, 21), style=0, value=u'')

        self.htelefono = wx.TextCtrl(id=wxID_LCLIENTESHTELEFONO,
              name=u'htelefono', parent=self, pos=wx.Point(476, 127),
              size=wx.Size(188, 21), style=0, value=u'')

        self.demail = wx.TextCtrl(id=wxID_LCLIENTESDEMAIL, name=u'demail',
              parent=self, pos=wx.Point(140, 151), size=wx.Size(188, 21),
              style=0, value=u'')

        self.hemail = wx.TextCtrl(id=wxID_LCLIENTESHEMAIL, name=u'hemail',
              parent=self, pos=wx.Point(476, 151), size=wx.Size(188, 21),
              style=0, value=u'')

        self.dpesos_acumulados = wx.TextCtrl(id=wxID_LCLIENTESDPESOS_ACUMULADOS,
              name=u'dpesos_acumulados', parent=self, pos=wx.Point(140, 175),
              size=wx.Size(188, 21), style=0, value=u'')

        self.hpesos_acumulados = wx.TextCtrl(id=wxID_LCLIENTESHPESOS_ACUMULADOS,
              name=u'hpesos_acumulados', parent=self, pos=wx.Point(476, 175),
              size=wx.Size(188, 21), style=0, value=u'')

        self.btn_listar = wx.Button(id=wxID_LCLIENTESBTN_LISTAR,
              label=u'Listar', name=u'btn_listar', parent=self,
              pos=wx.Point(504, 204), size=wx.Size(85, 27), style=0)
        self.btn_listar.Bind(wx.EVT_BUTTON, self.OnBtn_listarButton,
              id=wxID_LCLIENTESBTN_LISTAR)

        self.staticText5 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT5,
              label=u'Provincia', name='staticText5', parent=self,
              pos=wx.Point(8, 104), size=wx.Size(57, 15), style=0)

        self.staticText7 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT7,
              label=u'Fecha naciemiento', name='staticText7', parent=self,
              pos=wx.Point(8, 80), size=wx.Size(119, 15), style=0)

        self.staticText6 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT6,
              label=u'Codigo', name='staticText6', parent=self, pos=wx.Point(8,
              56), size=wx.Size(44, 15), style=0)

        self.staticText8 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT8,
              label=u'Nombre', name='staticText8', parent=self, pos=wx.Point(8,
              32), size=wx.Size(50, 15), style=0)

        self.staticText4 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT4,
              label=u'Provincia', name='staticText4', parent=self,
              pos=wx.Point(344, 104), size=wx.Size(57, 15), style=0)

        self.staticText3 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT3,
              label=u'Fecha naciemiento', name='staticText3', parent=self,
              pos=wx.Point(344, 80), size=wx.Size(119, 15), style=0)

        self.staticText2 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT2,
              label=u'Codigo', name='staticText2', parent=self,
              pos=wx.Point(344, 56), size=wx.Size(44, 15), style=0)

        self.staticText1 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT1,
              label=u'Nombre', name=u'staticText1', parent=self,
              pos=wx.Point(344, 32), size=wx.Size(50, 15), style=0)

        self.staticText10 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT10,
              label=u'Desde', name='staticText10', parent=self,
              pos=wx.Point(104, 8), size=wx.Size(41, 15), style=0)

        self.staticText9 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT9,
              label=u'Hasta', name='staticText9', parent=self, pos=wx.Point(445,
              8), size=wx.Size(38, 15), style=0)

        self.staticText12 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT12,
              label=u'Telefono', name='staticText12', parent=self,
              pos=wx.Point(8, 128), size=wx.Size(57, 15), style=0)

        self.staticText11 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT11,
              label=u'Telefono', name='staticText11', parent=self,
              pos=wx.Point(344, 128), size=wx.Size(57, 15), style=0)

        self.staticText13 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT13,
              label=u'Pesos acumulados', name='staticText13', parent=self,
              pos=wx.Point(344, 176), size=wx.Size(119, 15), style=0)

        self.staticText14 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT14,
              label=u'Pesos acumulados', name='staticText14', parent=self,
              pos=wx.Point(8, 176), size=wx.Size(119, 15), style=0)

        self.staticText15 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT15,
              label=u'Email', name='staticText15', parent=self, pos=wx.Point(8,
              152), size=wx.Size(57, 15), style=0)

        self.staticText16 = wx.StaticText(id=wxID_LCLIENTESSTATICTEXT16,
              label=u'Email', name='staticText16', parent=self,
              pos=wx.Point(344, 152), size=wx.Size(57, 15), style=0)

    def __init__(self, parent):
        self._init_ctrls(parent)
        
        # guardo en una lista todos los campos editables para que sea mas
        # facil acceder luego
        self.campos_desde = [self.dnombre, self.dcodigo, self.dfecha_nacimiento,
        self.dprovincia, self.dtelefono, self.demail, self.dpesos_acumulados]
        
        self.campos_hasta = [self.hnombre, self.hcodigo, self.hfecha_nacimiento,
        self.hprovincia, self.htelefono, self.hemail, self.hpesos_acumulados]

    def OnBtn_listarButton(self, event):
        """Obtiene el valor de todos los campos y genera una consulta SQL
        con los campos ingresados como restricciones"""

        import consultasBD
        import Vista

        #columnas = ['nombre', 'idcliente', 'cumple',
        #            'provincia', 'telefono', 'email',
        #            'acumulados']
        columnas_bd = consultasBD.getColumnasBD('Clientes apertura rango')
        columnas = consultasBD.getColumnasVista('Clientes apertura rango')
        consulta_base = "SELECT %s FROM cliente WHERE " % columnas_bd
        consultas = []
        datos = {}
        for desde, hasta, condicion in zip(self.campos_desde, self.campos_hasta, columnas):
            # si no se ingreso nada en ese campo
            # lo salteo
            if desde.GetValue() == '':
                continue
            datos['condicion'] = condicion
            if condicion in ['nombre', 'provincia', 'email']:
                datos['inicio'] = desde.GetValue()
                datos['fin'] = hasta.GetValue() + 'zzzzz'
            elif condicion == 'cumple':
                datos['inicio'] = desde.GetValue().split('/')
                datos['inicio'].reverse()
                datos['inicio'] = '-'.join(datos['inicio'])
                datos['fin'] = hasta.GetValue().split('/')
                datos['fin'].reverse()
                datos['fin'] = '-'.join(datos['fin'])
            else:
                datos['inicio'] = desde.GetValue()
                datos['fin'] = hasta.GetValue()
            consultas.append("""(%(condicion)s BETWEEN '%(inicio)s' AND '%(fin)s')""" % datos)
        print consultas
        consultas.append('1=1')
        consulta_base += ' AND '.join(consultas) + ';'
        print consulta_base
        #print consultasBD.ordenCruda(consulta_base)
        datos = consultasBD.ordenCruda(consulta_base)
        print datos
        vista = Vista.Vista(self, 'Clientes por apertura de rango')
        vista.cargar_celdas(datos, columnas)
        vista.ShowModal()
##        event.Skip()
        

